# 2.编写一个装饰器，用于缓存函数的结果，以便在相同参数调用时返回缓存的结果。
def cache(fun):
    def inner(*args):
        # 遍历缓存列表，如果参数已存在，则直接返回之前的结果
        for item in cache_list:
            if item["args"] == args:
                print(item["result"])
                return None

        fun_result = fun(*args)
        print(fun_result)

        cache_list.append({"args":args,"result":fun_result})

    return inner


@cache
def add(*args):
    sum = 0
    for i in args:
        sum += i
    return sum


if __name__ == "__main__":
    cache_list = []

    add(1,2,3)
    add(1,2,3,4)
    add(1,2,3)

    print(cache_list)